13 research outputs found
Duality of equations and coequations via contravariant adjunctions
In this paper we show duality results between categories of equations and categories of coequations. These dualities are obtained as restrictions of dualities between categories of algebras and coalgebras, which arise by lifting contravariant adjunctions on the base categories. By extending this approach to (co)algebras for (co)monads, we retrieve th
ケンガク ノ セイシン オ タイゲ ンシ タガクセイマンゾクガタジッセンテキケイエイガクキョウイク ノ ココロミ ソノ2 ケイエイセンリャクロン ノ コウギタイケン オ ソザイニ
We discuss a proof of the correctness of two sorting algorithms: Counting sort and Radix sort. The semi-automated proof is formalized in the state-of-the-art theorem prover KeY
OpenJDK's Java.utils.Collection.sort() Is Broken: The Good, the Bad and the Worst Case
We investigate the correctness of TimSort, which is the main sorting algorithm provided by the Java standard library. The goal is functional verification with mechanical proofs. During our verification attempt we discovered a bug which causes the implementation to crash. We characterize the conditions under which the bug occurs, and from this we derive a bug-free version that does not compromise the performance. We formally specify the new version and mechanically verify the absence of this bug with KeY, a state-of-the-art verification tool for Java
Enhanced coinduction
Coinduction, the dual of induction, is a fundamental principle for defining infinite objects and proving properties about them. The broad applicability and rapidly increasing interest in coinductive techniques is based on the theory of coalgebras, which allows one to understand and prove properties of state-based models of computation at a high level of abstraction.
In this thesis we develop methods that simplify and enhance coinductive reasoning, with coalgebra as the framework of choice to obtain generally applicable techniques. In the first part, we introduce a coalgebraic framework of enhanced coinductive proof methods,
which is applicable to a wide range of coinductive predicates and a wide range of state-based systems. In the second part, we propose enhancements to coinductive definition techniques based on the theory of mathematical operational semantics.Algorithms and the Foundations of Software technolog
Effectively eliminating auxiliaries
Auxiliary variables are used in the intermediate steps of a correctness proof to store additional information about the computation. We investigate for which classes of programs auxiliary variables can be avoided in the associated proof system, and give effective translations of proofs whenever this is the case